﻿using SoftwareConsulting.BI11.NumericalMethods.Interfaces;

namespace SoftwareConsulting.BI11.NumericalMethods.Optimization
{
    /// <summary>
    /// Класс точки, подозрительной на минимум, в методах максимизации одноаргументных функций
    /// </summary>
    public class SuspiciousMinimumPoint : SuspiciousOptimalPoint
    {
        /// <summary>
        /// Конструктор класса
        /// </summary>
        /// <param name="argument"></param>
        /// <param name="function"></param>
        public SuspiciousMinimumPoint(double argument, IOneVariableFunction function) : 
            base(argument, function)
        {
        }

        /// <summary>
        /// Возвращает флаг точки, более подходящей на минимум, чем указанная
        /// </summary>
        /// <param name="otherPoint"></param>
        /// <returns></returns>
        public override bool BetterThan(SuspiciousOptimalPoint otherPoint)
        {
            return this.Value < otherPoint.Value;
        }

        /// <summary>
        /// Возвращает как строку
        /// </summary>
        /// <returns></returns>
        protected override sealed string PrintedKey()
        {
            return " min@";
        }
    }
}
